<article id="wikiArticle">
<div></div>
<h2 id="消息">消息</h2>
<pre><code class="language-javascript">TypeError: "x" is (not) "y"

Examples:
TypeError: "x" is undefined
TypeError: "x" is null
TypeError: "undefined" is not an object
TypeError: "x" is not an object or null
TypeError: "x" is not a symbol
</code></pre>
<h2 id="错误类型">错误类型</h2>
<p><a href="Reference/Global_Objects/TypeError" title="TypeError（类型错误） 对象用来表示值的类型非预期类型时发生的错误。"><code>TypeError</code></a>.</p>
<h2 id="什么地方出错了">什么地方出错了?</h2>
<p>出现了与期望不符的类型。 这个错误常常由 <a href="Reference/Global_Objects/undefined" title="undefined是全局对象的一个属性。也就是说，它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。"><code>undefined</code></a> 或 <a href="Reference/Global_Objects/null" title="值 null 特指对象的值未设置。它是 JavaScript 基本类型 之一。"><code>null</code></a> 值引起。</p>
<p>此外，某些方法，例如 <a href="Reference/Global_Objects/Object/create" title="Object.create()方法创建一个新对象，使用现有的对象来提供新创建的对象的__proto__。 （请打开浏览器控制台以查看运行结果。）"><code>Object.create()</code></a> 或 <a href="Reference/Global_Objects/Symbol/keyFor" title="Symbol.keyFor(sym) 方法用来获取 symbol 注册表中与某个 symbol 关联的键。"><code>Symbol.keyFor()</code></a>， 要求必须提供特定类型的参数。</p>
<h2 id="示例">示例</h2>
<h3 id="错误情形">错误情形</h3>
<pre><code class="language-js example-bad">// undefined and null cases on which the substring method won't work
var foo = undefined;
foo.substring(1); // TypeError: foo is undefined

var foo = null;
foo.substring(1); // TypeError: foo is null


// Certain methods might require a specific type
var foo = {}
Symbol.keyFor(foo); // TypeError: foo is not a symbol

var foo = 'bar'
Object.create(foo); // TypeError: "foo" is not an object or null
</code></pre>
<h3 id="解决方法">解决方法</h3>
<p>要解决空指针以及 <code>undefined</code> 或 <code>null</code> 值的问题， 你可以使用 <a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a> 操作符， 例如：</p>
<pre><code  class="language-javascript">if (typeof foo !== 'undefined') {
  // Now we know that foo is defined, we are good to go.
}</code></pre>
<h2 id="相关页面">相关页面</h2>
<ul>
<li><a href="Reference/Global_Objects/undefined" title="undefined是全局对象的一个属性。也就是说，它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。"><code>undefined</code></a></li>
<li><a href="Reference/Global_Objects/null" title="值 null 特指对象的值未设置。它是 JavaScript 基本类型 之一。"><code>null</code></a></li>
</ul>
</article>